home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / SourceCode / AdobeExamples / NX_ImportAdv / DrawingViewWraps.psw < prev    next >
Text File  |  1992-12-19  |  4KB  |  158 lines

  1.  
  2. /*
  3.  * (a)  (C) 1990 by Adobe Systems Incorporated. All rights reserved.
  4.  *
  5.  * (b)  If this Sample Code is distributed as part of the Display PostScript
  6.  *    System Software Development Kit from Adobe Systems Incorporated,
  7.  *    then this copy is designated as Development Software and its use is
  8.  *    subject to the terms of the License Agreement attached to such Kit.
  9.  *
  10.  * (c)  If this Sample Code is distributed independently, then the following
  11.  *    terms apply:
  12.  *
  13.  * (d)  This file may be freely copied and redistributed as long as:
  14.  *    1) Parts (a), (d), (e) and (f) continue to be included in the file,
  15.  *    2) If the file has been modified in any way, a notice of such
  16.  *      modification is conspicuously indicated.
  17.  *
  18.  * (e)  PostScript, Display PostScript, and Adobe are registered trademarks of
  19.  *    Adobe Systems Incorporated.
  20.  * 
  21.  * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
  22.  *    CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
  23.  *    AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
  24.  *    ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
  25.  *    OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
  26.  *    WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
  27.  *    WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
  28.  *    DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, 
  29.  *    FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
  30.  *    OF THIRD PARTY RIGHTS.
  31.  */
  32.  
  33. /*
  34. *    DrawingViewWraps.psw
  35. */
  36.  
  37. defineps PSWStrokeX(float LLX, LLY, URX, URY)
  38.     LLX LLY moveto  URX URY lineto
  39.     LLX URY moveto URX  LLY lineto stroke
  40. endps
  41.  
  42. defineps PSWTranslateRotate(float X, Y, Angle)
  43.     X Y translate Angle rotate
  44. endps
  45.  
  46. defineps PSWSetLine (float Width, Gray)
  47.     Width setlinewidth Gray setgray
  48. endps
  49.  
  50. defineps PSWSetControlPoints (char *Font; float  FontSize, FontGray, FontWidth)
  51.     /Font FontSize selectfont  FontGray setgray  FontWidth setlinewidth
  52. endps
  53.  
  54. defineps PSWDrawControlPoints (float X, Y; float Pts[Tot_Pts]; int Tot_Pts; char *Chs)
  55.     X Y moveto  (Chs) Pts xyshow
  56. endps
  57.  
  58. /*
  59. *  The sa and rsa procedures ensure that the first character is drawn correctly
  60. *  with respect to device space. It's not so much an issue with square 
  61. *  images but can be quite significant with other shapes.
  62. */
  63. defineps PSWDefineFont(char *fontname)
  64.     10 dict dup begin
  65.     /sa { % x y  sa  x' y'
  66.         transform
  67.         0.25 sub round 0.25 add exch
  68.         0.25 sub round 0.25 add exch
  69.         itransform
  70.     } bind def
  71.  
  72.     /rsa { %dx dy  rsa  dx' dy'
  73.         dtransform
  74.         round exch
  75.         round exch
  76.         idtransform
  77.     } bind def
  78.  
  79.     /FontName /fontname def
  80.     /FontType 3 def
  81.     /FontMatrix [.001 0 0 .001 0 0] def
  82.     /FontBBox [-500 -500 500 500] def
  83.  
  84.     /Encoding 256 array def
  85.         0 1 255 {Encoding exch /.notdef put} for
  86.     
  87.     Encoding
  88.         dup (a) 0 get /Rectfill put
  89.         dup (b) 0 get /Rectopen put
  90.         dup (c) 0 get /CrossOut put
  91.         (d) 0 get /CrossIn put
  92.     
  93.     /CharProcs 5 dict def
  94.     CharProcs begin
  95.         /.notdef { } def
  96.         /Rectfill
  97.         {
  98.             -300 -300 sa moveto 0 600 rsa rlineto
  99.             600 0 rsa rlineto 0 -600 rsa rlineto closepath
  100.             fill
  101.         } def
  102.         /Rectopen
  103.         {
  104.             -300 -300 sa moveto 0 600 rsa rlineto
  105.             600 0 rsa rlineto 0 -600 rsa rlineto closepath
  106.             stroke
  107.         } def
  108.         /CrossOut
  109.         {
  110.             100 600 sa moveto     0 -1200 rsa rlineto
  111.             -200 0 rsa rlineto        0 1200 rsa rlineto closepath
  112.  
  113.             600 100 sa moveto        0 -200 rsa rlineto
  114.             -1200 0 rsa rlineto        0 200 rsa rlineto closepath
  115.             fill
  116.         } def
  117.         /CrossIn
  118.         {
  119.             0 500 sa moveto     0 -1000 rsa rlineto
  120.             -500 0 sa moveto    1000 0 rsa rlineto
  121.             stroke
  122.         } def
  123.     end
  124.     
  125.     /BuildChar
  126.     {
  127.         500 0 -500 -500 500 500 setcachedevice
  128.         exch begin
  129.             Encoding exch get
  130.             CharProcs exch get
  131.             exec
  132.         end
  133.     } def
  134.   end
  135.   
  136.   /fontname exch definefont pop
  137. endps
  138.  
  139. /*
  140. *    Define the image dictionary. Base it off of the NeXTLaser-300
  141. *    dictionary only give it a different transfer function.
  142. */
  143. defineps PSWDefineImageDict(char *dictname)
  144.    7 dict dup begin
  145.     /jobTag 0 def
  146.     /colorSpace 0 def
  147.     /defaultHalftone nextdict /NeXTMegaPixelDisplay get /defaultHalftone get  def
  148.     /samplesPerPixel 1 def
  149.     /bitsPerSample 1 def
  150.     /initialTransfer {} def
  151.     /isPlanar false def
  152.   end
  153.   
  154.   /dictname exch readonly def
  155. endps
  156.  
  157.  
  158.